home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…ch: Other People's Memory / ADC Developer CD (1993-03) (''Other People's Memory'')_iso / Dev.CD Mar 93.iso / Development Platforms / MPW Related / MPW Interfaces & Libraries / PInterfaces / TextEdit.p < prev    next >
Encoding:
Text File  |  1992-06-17  |  9.9 KB  |  336 lines  |  [TEXT/MPS ]

  1.  
  2. {
  3. Created: Thursday, September 12, 1991 at 12:34 PM
  4.  TextEdit.p
  5.  Pascal Interface to the Macintosh Libraries
  6.  
  7.   Copyright Apple Computer, Inc. 1985-1991
  8.   All rights reserved
  9. }
  10.  
  11.  
  12. {$IFC UNDEFINED UsingIncludes}
  13. {$SETC UsingIncludes := 0}
  14. {$ENDC}
  15.  
  16. {$IFC NOT UsingIncludes}
  17.  UNIT TextEdit;
  18.  INTERFACE
  19. {$ENDC}
  20.  
  21. {$IFC UNDEFINED UsingTextEdit}
  22. {$SETC UsingTextEdit := 1}
  23.  
  24. {$I+}
  25. {$SETC TextEditIncludes := UsingIncludes}
  26. {$SETC UsingIncludes := 1}
  27. {$IFC UNDEFINED UsingQuickdraw}
  28. {$I $$Shell(PInterfaces)Quickdraw.p}
  29. {$ENDC}
  30. {$SETC UsingIncludes := TextEditIncludes}
  31.  
  32. CONST
  33.  
  34. { Justification styles }
  35. teJustLeft = 0;
  36. teJustCenter = 1;
  37. teJustRight = -1;
  38. teForceLeft = -2;
  39.  
  40. { new names for the Justification styles }
  41. teFlushDefault = 0;                        {flush according to the line direction }
  42. teCenter = 1;                            {center justify }
  43. teFlushRight = -1;                        {flush right for all scripts }
  44. teFlushLeft = -2;                        {flush left for all scripts }
  45.  
  46. { Set/Replace style modes }
  47. fontBit = 0;                            {set font}
  48. faceBit = 1;                            {set face}
  49. sizeBit = 2;                            {set size}
  50. clrBit = 3;                                {set color}
  51. addSizeBit = 4;                            {add size mode}
  52. toglBit = 5;                            {set faces in toggle mode}
  53.  
  54. { TESetStyle/TEContinuousStyle modes }
  55. doFont = 1;                                { set font (family) number}
  56. doFace = 2;                                {set character style}
  57. doSize = 4;                                {set type size}
  58. doColor = 8;                            {set color}
  59. doAll = 15;                                {set all attributes}
  60. addSize = 16;                            {adjust type size}
  61. doToggle = 32;                            {toggle mode for TESetStyle & TEContinuousStyle}
  62.  
  63. { offsets into TEDispatchRec }
  64. EOLHook = 0;                            {[ProcPtr] TEEOLHook}
  65. DRAWHook = 4;                            {[ProcPtr] TEWidthHook}
  66. WIDTHHook = 8;                            {[ProcPtr] TEDrawHook}
  67. HITTESTHook = 12;                        {[ProcPtr] TEHitTestHook}
  68. nWIDTHHook = 24;                        {[ProcPtr] nTEWidthHook}
  69. TextWidthHook = 28;                        {[ProcPtr] TETextWidthHook}
  70.  
  71. { selectors for TECustomHook }
  72. intEOLHook = 0;                            {TEIntHook value}
  73. intDrawHook = 1;                        {TEIntHook value}
  74. intWidthHook = 2;                        {TEIntHook value}
  75. intHitTestHook = 3;                        {TEIntHook value}
  76. intNWidthHook = 6;                        {TEIntHook value for new version of WidthHook}
  77. intTextWidthHook = 7;                    {TEIntHook value for new TextWidthHook}
  78.  
  79. { feature or bit definitions for TEFeatureFlag }
  80. teFAutoScr = 0;                            {00000001b}
  81. teFTextBuffering = 1;                    {00000010b}
  82. teFOutlineHilite = 2;                    {00000100b}
  83. teFInlineInput = 3;                        {00001000b}
  84. teFUseTextServices = 4;                    {00010000b}
  85.  
  86. { action for the new "bit (un)set" interface, TEFeatureFlag }
  87. TEBitClear = 0;
  88. TEBitSet = 1;                            {set the selector bit}
  89. TEBitTest = -1;                            {no change; just return the current setting}
  90.  
  91. {constants for identifying the routine that called FindWord }
  92. teWordSelect = 4;                        {clickExpand to select word}
  93. teWordDrag = 8;                            {clickExpand to drag new word}
  94. teFromFind = 12;                        {FindLine called it ($0C)}
  95. teFromRecal = 16;                        {RecalLines called it ($10)}
  96.  
  97. TYPE
  98. TEPtr = ^TERec;
  99. TEHandle = ^TEPtr;
  100. TERec = RECORD
  101.  destRect: Rect;
  102.  viewRect: Rect;
  103.  selRect: Rect;
  104.  lineHeight: INTEGER;
  105.  fontAscent: INTEGER;
  106.  selPoint: Point;
  107.  selStart: INTEGER;
  108.  selEnd: INTEGER;
  109.  active: INTEGER;
  110.  wordBreak: ProcPtr;
  111.  clikLoop: ProcPtr;
  112.  clickTime: LONGINT;
  113.  clickLoc: INTEGER;
  114.  caretTime: LONGINT;
  115.  caretState: INTEGER;
  116.  just: INTEGER;
  117.  teLength: INTEGER;
  118.  hText: Handle;
  119.  recalBack: INTEGER;
  120.  recalLines: INTEGER;
  121.  clikStuff: INTEGER;
  122.  crOnly: INTEGER;
  123.  txFont: INTEGER;
  124.  txFace: Style;                            {txFace is unpacked byte}
  125.  txMode: INTEGER;
  126.  txSize: INTEGER;
  127.  inPort: GrafPtr;
  128.  highHook: ProcPtr;
  129.  caretHook: ProcPtr;
  130.  nLines: INTEGER;
  131.  lineStarts: ARRAY [0..16000] OF INTEGER;
  132.  END;
  133.  
  134. CharsPtr = ^Chars;
  135. CharsHandle = ^CharsPtr;
  136.  
  137. Chars = PACKED ARRAY [0..32000] OF CHAR;
  138.  
  139. StyleRun = RECORD
  140.  startChar: INTEGER;                    {starting character position}
  141.  styleIndex: INTEGER;                    {index in style table}
  142.  END;
  143.  
  144. STElement = RECORD
  145.  stCount: INTEGER;                        {number of runs in this style}
  146.  stHeight: INTEGER;                        {line height}
  147.  stAscent: INTEGER;                        {font ascent}
  148.  stFont: INTEGER;                        {font (family) number}
  149.  stFace: Style;                            {character Style}
  150.  stSize: INTEGER;                        {size in points}
  151.  stColor: RGBColor;                        {absolute (RGB) color}
  152.  END;
  153.  
  154. STPtr = ^TEStyleTable;
  155. STHandle = ^STPtr;
  156.  
  157. TEStyleTable = ARRAY [0..1776] OF STElement;
  158.  
  159. LHElement = RECORD
  160.  lhHeight: INTEGER;                        {maximum height in line}
  161.  lhAscent: INTEGER;                        {maximum ascent in line}
  162.  END;
  163.  
  164. LHPtr = ^LHTable;
  165. LHHandle = ^LHPtr;
  166.  
  167. LHTable = ARRAY [0..8000] OF LHElement;
  168.  
  169. ScrpSTElement = RECORD
  170.  scrpStartChar: LONGINT;                {starting character position}
  171.  scrpHeight: INTEGER;                    {starting character position}
  172.  scrpAscent: INTEGER;
  173.  scrpFont: INTEGER;
  174.  scrpFace: Style;                        {unpacked byte}
  175.  scrpSize: INTEGER;
  176.  scrpColor: RGBColor;
  177.  END;
  178.  
  179. ScrpSTTable = ARRAY[0..1600] OF ScrpSTElement;
  180.  
  181. StScrpPtr = ^StScrpRec;
  182. StScrpHandle = ^StScrpPtr;
  183. StScrpRec = RECORD
  184.  scrpNStyles: INTEGER;                    {number of styles in scrap}
  185.  scrpStyleTab: ScrpSTTable;                {table of styles for scrap}
  186.  END;
  187.  
  188. NullStPtr = ^NullStRec;
  189. NullStHandle = ^NullStPtr;
  190. NullStRec = RECORD
  191.  teReserved: LONGINT;                    {reserved for future expansion}
  192.  nullScrap: StScrpHandle;                {handle to scrap style table}
  193.  END;
  194.  
  195. TEStylePtr = ^TEStyleRec;
  196. TEStyleHandle = ^TEStylePtr;
  197. TEStyleRec = RECORD
  198.  nRuns: INTEGER;                        {number of style runs}
  199.  nStyles: INTEGER;                        {size of style table}
  200.  styleTab: STHandle;                    {handle to style table}
  201.  lhTab: LHHandle;                        {handle to line-height table}
  202.  teRefCon: LONGINT;                        {reserved for application use}
  203.  nullStyle: NullStHandle;                {Handle to style set at null selection}
  204.  runs: ARRAY [0..8000] OF StyleRun;        {ARRAY [0..8000] OF StyleRun}
  205.  END;
  206.  
  207. TextStylePtr = ^TextStyle;
  208. TextStyleHandle = ^TextStylePtr;
  209. TextStyle = RECORD
  210.  tsFont: INTEGER;                        {font (family) number}
  211.  tsFace: Style;                            {character Style}
  212.  tsSize: INTEGER;                        {size in point}
  213.  tsColor: RGBColor;                        {absolute (RGB) color}
  214.  END;
  215.  
  216.  
  217. TEIntHook = INTEGER;
  218.  
  219. PROCEDURE TEInit;
  220.  INLINE $A9CC;
  221. FUNCTION TENew(destRect: Rect;viewRect: Rect): TEHandle;
  222.  INLINE $A9D2;
  223. PROCEDURE TEDispose(hTE: TEHandle);
  224.  INLINE $A9CD;
  225. PROCEDURE TESetText(text: Ptr;length: LONGINT;hTE: TEHandle);
  226.  INLINE $A9CF;
  227. FUNCTION TEGetText(hTE: TEHandle): CharsHandle;
  228.  INLINE $A9CB;
  229. PROCEDURE TEIdle(hTE: TEHandle);
  230.  INLINE $A9DA;
  231. PROCEDURE TESetSelect(selStart: LONGINT;selEnd: LONGINT;hTE: TEHandle);
  232.  INLINE $A9D1;
  233. PROCEDURE TEActivate(hTE: TEHandle);
  234.  INLINE $A9D8;
  235. PROCEDURE TEDeactivate(hTE: TEHandle);
  236.  INLINE $A9D9;
  237. PROCEDURE TEKey(key: CHAR;hTE: TEHandle);
  238.  INLINE $A9DC;
  239. PROCEDURE TECut(hTE: TEHandle);
  240.  INLINE $A9D6;
  241. PROCEDURE TECopy(hTE: TEHandle);
  242.  INLINE $A9D5;
  243. PROCEDURE TEPaste(hTE: TEHandle);
  244.  INLINE $A9DB;
  245. PROCEDURE TEDelete(hTE: TEHandle);
  246.  INLINE $A9D7;
  247. PROCEDURE TEInsert(text: Ptr;length: LONGINT;hTE: TEHandle);
  248.  INLINE $A9DE;
  249. PROCEDURE TESetJust(just: INTEGER;hTE: TEHandle);
  250.  INLINE $A9DF;
  251. PROCEDURE TEUpdate(rUpdate: Rect;hTE: TEHandle);
  252.  INLINE $A9D3;
  253. PROCEDURE TextBox(text: Ptr;length: LONGINT;box: Rect;just: INTEGER);
  254.  INLINE $A9CE;
  255. PROCEDURE TEScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  256.  INLINE $A9DD;
  257. PROCEDURE TESelView(hTE: TEHandle);
  258.  INLINE $A811;
  259. PROCEDURE TEPinScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  260.  INLINE $A812;
  261. PROCEDURE TEAutoView(fAuto: BOOLEAN;hTE: TEHandle);
  262.  INLINE $A813;
  263. FUNCTION TEScrapHandle: Handle;
  264.  INLINE $2EB8,$0AB4;
  265. PROCEDURE TECalText(hTE: TEHandle);
  266.  INLINE $A9D0;
  267. FUNCTION TEGetOffset(pt: Point;hTE: TEHandle): INTEGER;
  268.  INLINE $A83C;
  269. FUNCTION TEGetPoint(offset: INTEGER;hTE: TEHandle): Point;
  270.  INLINE $3F3C,$0008,$A83D;
  271. PROCEDURE TEClick(pt: Point;fExtend: BOOLEAN;h: TEHandle);
  272.  INLINE $A9D4;
  273. FUNCTION TEStylNew(destRect: Rect;viewRect: Rect): TEHandle;
  274.  INLINE $A83E;
  275. FUNCTION TEStyleNew(destRect: Rect;viewRect: Rect): TEHandle;
  276.  INLINE $A83E;
  277. PROCEDURE SetStylHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  278.  INLINE $3F3C,$0005,$A83D;
  279. PROCEDURE SetStyleHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  280.  INLINE $3F3C,$0005,$A83D;
  281. FUNCTION GetStylHandle(hTE: TEHandle): TEStyleHandle;
  282.  INLINE $3F3C,$0004,$A83D;
  283. FUNCTION GetStyleHandle(hTE: TEHandle): TEStyleHandle;
  284.  INLINE $3F3C,$0004,$A83D;
  285. PROCEDURE TEGetStyle(offset: INTEGER;VAR theStyle: TextStyle;VAR lineHeight: INTEGER;
  286.  VAR fontAscent: INTEGER;hTE: TEHandle);
  287.  INLINE $3F3C,$0003,$A83D;
  288. PROCEDURE TEStylPaste(hTE: TEHandle);
  289.  INLINE $3F3C,$0000,$A83D;
  290. PROCEDURE TEStylePaste(hTE: TEHandle);
  291.  INLINE $3F3C,$0000,$A83D;
  292. PROCEDURE TESetStyle(mode: INTEGER;newStyle: TextStyle;redraw: BOOLEAN;
  293.  hTE: TEHandle);
  294.  INLINE $3F3C,$0001,$A83D;
  295. PROCEDURE TEReplaceStyle(mode: INTEGER;oldStyle: TextStyle;newStyle: TextStyle;
  296.  redraw: BOOLEAN;hTE: TEHandle);
  297.  INLINE $3F3C,$0002,$A83D;
  298. FUNCTION GetStylScrap(hTE: TEHandle): StScrpHandle;
  299.  INLINE $3F3C,$0006,$A83D;
  300. FUNCTION GetStyleScrap(hTE: TEHandle): StScrpHandle;
  301.  INLINE $3F3C,$0006,$A83D;
  302. PROCEDURE TEStylInsert(text: Ptr;length: LONGINT;hST: StScrpHandle;hTE: TEHandle);
  303.  INLINE $3F3C,$0007,$A83D;
  304. PROCEDURE TEStyleInsert(text: Ptr;length: LONGINT;hST: StScrpHandle;hTE: TEHandle);
  305.  INLINE $3F3C,$0007,$A83D;
  306. FUNCTION TEGetHeight(endLine: LONGINT;startLine: LONGINT;hTE: TEHandle): LONGINT;
  307.  INLINE $3F3C,$0009,$A83D;
  308. FUNCTION TEContinuousStyle(VAR mode: INTEGER;VAR aStyle: TextStyle;hTE: TEHandle): BOOLEAN;
  309.  INLINE $3F3C,$000A,$A83D;
  310. PROCEDURE SetStylScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  311.  redraw: BOOLEAN;hTE: TEHandle);
  312.  INLINE $3F3C,$000B,$A83D;
  313. PROCEDURE SetStyleScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  314.  redraw: BOOLEAN;hTE: TEHandle);
  315.  INLINE $3F3C,$000B,$A83D;
  316. PROCEDURE TECustomHook(which: TEIntHook;VAR addr: ProcPtr;hTE: TEHandle);
  317.  INLINE $3F3C,$000C,$A83D;
  318. FUNCTION TENumStyles(rangeStart: LONGINT;rangeEnd: LONGINT;hTE: TEHandle): LONGINT;
  319.  INLINE $3F3C,$000D,$A83D;
  320. FUNCTION TEFeatureFlag(feature: INTEGER;action: INTEGER;hTE: TEHandle): INTEGER;
  321.  INLINE $3F3C,$000E,$A83D;
  322. FUNCTION TEGetScrapLen: LONGINT;
  323. PROCEDURE TESetScrapLen(length: LONGINT);
  324. FUNCTION TEFromScrap: OSErr;
  325. FUNCTION TEToScrap: OSErr;
  326. PROCEDURE SetClikLoop(clikProc: ProcPtr;hTE: TEHandle);
  327. PROCEDURE SetWordBreak(wBrkProc: ProcPtr;hTE: TEHandle);
  328.  
  329.  
  330. {$ENDC} { UsingTextEdit }
  331.  
  332. {$IFC NOT UsingIncludes}
  333.  END.
  334. {$ENDC}
  335.  
  336.